Skip to content

fix(web): prevent message sync pill layout flicker - #52

Merged
asfires merged 2 commits into
mainfrom
t3code/fix-message-sync-flicker
Aug 19, 2026
Merged

fix(web): prevent message sync pill layout flicker#52
asfires merged 2 commits into
mainfrom
t3code/fix-message-sync-flicker

Conversation

@asfires

@asfires asfires commented Aug 18, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Delay the cached-thread sync indicator for 300 ms so routine foreground
    synchronization does not briefly flash.
  • Position the indicator outside the measured composer layout so longer syncs
    cannot change the virtualized timeline inset.
  • Reset the reveal delay when switching threads.
  • Add focused regression coverage for the delay and layout behavior.

Why

Returning to a T3 Code tab intentionally restarts the active thread subscription
from its latest sequence. While waiting for the server's completion marker, an
existing thread briefly enters the synchronizing state.

The sync pill previously participated in the measured composer layout. Appearing
and disappearing changed composerOverlayHeight, which changed the virtualized
timeline's bottom inset twice in quick succession. On scrollable threads, that
caused a visible message-text flicker.

This keeps the foreground synchronization behavior intact while preventing brief
syncs—and any longer visible sync indicator—from changing timeline geometry.

UI Changes

Before: Returning to the tab briefly displays “Syncing messages...” and
reflows a scrollable message timeline (left Chrome tab in the demo video below).

image

After: Repeated tab switches no longer flash or reflow the timeline (right Chrome tab in the demo video below).

Screencast.from.2026-08-18.16-12-31.webm

Testing

  • vp test run apps/web/src/threadSync.test.ts apps/web/src/components/chat/ThreadSyncStatusPill.test.tsx
  • vp run --filter @t3tools/web typecheck
  • Targeted lint, formatting, and git diff --check

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after evidence for the UI change
  • I included a video for the interaction change

Implemented with GPT-5.6-sol through the Codex harness in T3 Code.

- Delay brief sync indicators and anchor the pill above the composer
- Reset the pill when switching threads
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Aug 18, 2026
@github-actions github-actions Bot added size:S and removed size:M labels Aug 18, 2026
@asfires
asfires merged commit 94fffc8 into main Aug 19, 2026
7 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant